home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1993-09-05 | 1.7 KB | 84 lines |
- '
- ' SamLongPlay Procedures V1.0
- '
- ' Written by Christopher Hodges
- '
- Dim SDAT(3,8)
- Global SDAT()
- F$=Command Line$
- If F$="" Then Amos To Front : F$=Fsel$("","","Please select a","DSound Dump file") : Amos To Back
- If F$="" Then End
- If Exist(F$)=0 Then End
- Open In 1,F$
- A$=Input$(1,4)
- If Leek(Varptr(A$))=Lof(1)-6
- A$=Input$(1,2)
- FREQ=Deek(Varptr(A$))
- Else
- FREQ=15625
- End If
- Close 1
- SAMLP[F$,0,0,3,15,64]
- End
- Procedure SAMLP[F$,V,LOP,QUIT,BANK,BUF]
- VV=1 : If V Then For A=1 To V : Add VV,VV : Next
- VV=3
- Erase BANK : Reserve As Chip Work BANK,BUF*1048+1048
- Open In V+1,F$
- LS=Lof(V+1) : LB=BUF*512
- FREQ=15625
- A$=Input$(1,4)
- If Leek(Varptr(A$))=LS-6
- A$=Input$(1,2)
- FREQ=Deek(Varptr(A$))
- LOP=6
- End If
- If A$="FORM"
- Repeat
- A$=Input$(1,4)
- Until A$="VHDR"
- A$=Input$(1,24)
- FREQ=Deek(Varptr(A$)+16)
- Repeat
- A$=Input$(1,4)
- Until A$="BODY"
- A$=Input$(1,4)
- LOP=Pof(1)
- End If
- Add LS,-Pof(1)
- B=0 : FL=0 : S=Start(BANK) : L=LS
- Repeat
- LL=Min(L,LB)
- If L-LL>0 and L-LL<LB/2 Then LL=LB/2
- Sload V+1 To S+B*LB,LL
- If FL
- Sam Swap VV To S+B*LB,LL
- SAMPL=0
- While Sam Swapped(V)=0
- SAMPL=1
- Multi Wait
- If(Inkey$<>"") or Mouse Key>0
- Sam Stop VV
- Close V+1
- Erase BANK
- Pop Proc
- End If
- Wend
- If SAMPL=0
- Sam Raw VV,S+B*LB,LL,FREQ
- End If
- Else
- Sam Raw VV,S+B*LB,LL,FREQ
- FL=1
- End If
- B=1-B
- Add L,-LL
- If L=0 and LOP>-1 Then Pof(V+1)=LOP : L=LS-LOP+1
- Until L=0
- Fill S+B*LB To S+B*LB+LB,0
- Sam Swap VV To S+B*LB,LB
- While Sam Swapped(V)=0 : Wend
- Sam Stop VV
- Close V+1
- Erase BANK
- End Proc